/*
 * 串口方法库
 *    - 接收串口传来的字符, 并直接输出显示
 *    - 接收字符结束标记是换行符: \n
 *    - 串口波特率:9600
 *    - 接收方式:串口中断事件
 *    
 * 注意:
 *    - 串口中断事件不能用于Leonardo, Micro,或其它ATmega32U4为核心的板子
 *    - 需要在主方法中定义2个全局变量
 *        _s_inputString
 *        _s_stringComplete
*/
//String _s_inputString    = "";              //缓存接收到的数字(字符串方式)
//bool   _s_stringComplete = false;           //接收结束标记

//把串口收到的数据直接输出到串口, 此方法会重置标记位和清空缓存
void printSerialContent(){
  if (_s_stringComplete) {
    Serial.println(_s_inputString);         
    _s_inputString = "";                     //清空变量, 准备下次接收新值
    _s_stringComplete = false;               //重置标记位
  }
}

/*
  SerialEvent occurs whenever a new data comes in the hardware serial RX. This
  routine is run between each time loop() runs, so using delay inside loop can
  delay response. Multiple bytes of data may be available.
*/
void serialEvent() {
  while (Serial.available()) {
    char inChar = (char)Serial.read();    //接收1个新的 byte
    if (inChar == '\n') {                 //判断接收是否结束(以换行符为标记)
      _s_stringComplete = true;
    }else{
      _s_inputString += inChar;           //把接收到的Byte放到String全局变量中
    }
  }
}
